//
// Created by LONG on 2020/10/17.
//

#include <NGAP_NGAP-PDU.h>
#include <NGAP_NGSetupRequest.h>
#include <NGAP_InitiatingMessage.h>
#include <NGAP_GlobalGNB-ID.h>
#include <NGAP_ProtocolIE-Field.h>
#include <NGAP_SupportedTAItem.h>
#include <NGAP_BroadcastPLMNItem.h>
#include <NGAP_SliceSupportItem.h>
#include "../include/ngapMsgBuilder.h"
//
//int32_t NGAP_BuildNGSetupRequest(void)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_InitiatingMessage_t *initiatingMessage;
//    NGAP_NGSetupRequest_t *NGSetupRequest;+
//                                              NGAP_NGSetupRequestIEs_t *ie = NULL;
//    S_O5gPlmnId plmnId;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
//    pdu.choice.initiatingMessage = OS_MemCalloc(1, sizeof(NGAP_InitiatingMessage_t));
//
//    initiatingMessage = pdu.choice.initiatingMessage;
//    initiatingMessage->procedureCode = NGAP_ProcedureCode_id_NGSetup;
//    initiatingMessage->criticality = NGAP_Criticality_reject;
//    initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_NGSetupRequest;
//    {
//        NGSetupRequest = &initiatingMessage->value.choice.NGSetupRequest;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_NGSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&NGSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_GlobalRANNodeID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_NGSetupRequestIEs__value_PR_GlobalRANNodeID;
//
//        NGAP_GlobalRANNodeID_t *GlobalRANNodeID = &ie->value.choice.GlobalRANNodeID;
//        GlobalRANNodeID->present = NGAP_GlobalRANNodeID_PR_globalGNB_ID;
//
//        NGAP_GlobalGNB_ID_t *globalGNB_ID = (NGAP_GlobalGNB_ID_t *)ASN1_MemCalloc(1, sizeof(NGAP_GlobalGNB_ID_t));
//        GlobalRANNodeID->choice.globalGNB_ID = globalGNB_ID;
//
//        O5G_PlmnId_Build(&plmnId, gpL3Inst->nbInst[0].plmn.mcc, gpL3Inst->nbInst[0].plmn.mnc, gpL3Inst->nbInst[0].plmn.mncLen);
//        ogs_asn_buffer_to_OCTET_STRING(&plmnId, O5G_PLMN_ID_LEN, &globalGNB_ID->pLMNIdentity);
//
//        ogs_ngap_uint32_to_GNB_ID(gpL3Inst->nbInst[0].nbId, 32, &globalGNB_ID->gNB_ID);
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_NGSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&NGSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_SupportedTAList;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_NGSetupRequestIEs__value_PR_SupportedTAList;
//
//        NGAP_SupportedTAItem_t *tacItem;
//        tacItem = ASN1_MemCalloc(1, sizeof(NGAP_SupportedTAItem_t));
//        ASN_SEQUENCE_ADD(&ie->value.choice.SupportedTAList, tacItem);
//        tacItem->tAC = "0081";
//
//        NGAP_BroadcastPLMNItem_t *NBroadcastPLMNItem;
//        NBroadcastPLMNItem = ASN1_MemCalloc(1, sizeof(NGAP_BroadcastPLMNItem_t));
//        ASN_SEQUENCE_ADD(&tacItem->broadcastPLMNList, NBroadcastPLMNItem);
//
//        NBroadcastPLMNItem->pLMNIdentity = "46001";
//
//        NGAP_SliceSupportItem_t *SliceSupportItem;
//        SliceSupportItem = ASN1_MemCalloc(1, sizeof(NGAP_SliceSupportItem_t));
//        ASN_SEQUENCE_ADD(&NBroadcastPLMNItem->tAISliceSupportList, SliceSupportItem);
//        SliceSupportItem->s_NSSAI.sST = "1";
//
//        /* IE3 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_NGSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&NGSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_DefaultPagingDRX;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_NGSetupRequestIEs__value_PR_PagingDRX;
//
//
//        ie->value.choice。PagingDRX = 1000;
//
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildNGSetupResponse(void)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_SuccessfulOutcome_t *successfulOutcome;
//    NGAP_NGSetupResponse_t *NGSetupResponse;
//    NGAP_NGSetupResponseIEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
//    pdu.choice.successfulOutcome = OS_MemCalloc(1, sizeof(NGAP_NGSetupResponse_t));
//
//    successfulOutcome = pdu.choice.successfulOutcome;
//    successfulOutcome->procedureCode = NGAP_ProcedureCode_id_NGSetup;
//    successfulOutcome->criticality = NGAP_Criticality_reject;
//    successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_NGSetupResponse;
//    {
//        NGSetupResponse = &successfulOutcome->value.choice.NGSetupResponse;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_NGSetupResponseIEs_t));
//        ASN_SEQUENCE_ADD(&NGSetupResponse->protocolIEs, ie);
//
//        ie->id = NGAP_ProtocolIE_ID_id_AMFName;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_NGSetupResponseIEs__value_PR_AMFName;
//        ie->value.choice.AMFName = "xubin";
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_NGSetupResponseIEs_t));
//        ASN_SEQUENCE_ADD(&NGSetupResponse->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_ServedGUAMIList;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_NGSetupResponseIEs__value_PR_ServedGUAMIList;
//
//        NGAP_ServedGUAMIItem_t *ServedGUAMIItem;
//        ServedGUAMIItem = ASN1_MemCalloc(1, sizeof(NGAP_ServedGUAMIItem_t));
//        ASN_SEQUENCE_ADD(&ie->value.choice.ServedGUAMIList, ServedGUAMIItem);
//        ServedGUAMIItem->gUAMI.aMFPointer = "100";
//        ServedGUAMIItem->gUAMI.aMFRegionID = "100";
//        ServedGUAMIItem->gUAMI.aMFSetID = "100";
//        ServedGUAMIItem->gUAMI.pLMNIdentity = "46001";
//
//        /* IE3 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_NGSetupResponseIEs_t));
//        ASN_SEQUENCE_ADD(&NGSetupResponse->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RelativeAMFCapacity;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_NGSetupResponseIEs__value_PR_RelativeAMFCapacity;
//        ie->value.choice.RelativeAMFCapacity = 200;
//
//        /* IE4 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_NGSetupResponseIEs_t));
//        ASN_SEQUENCE_ADD(&NGSetupResponse->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_PLMNSupportList;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_NGSetupResponseIEs__value_PR_PLMNSupportList;
//
//        NGAP_PLMNSupportItem_t *PLMNSupportItem;
//        PLMNSupportItem = ASN1_MemCalloc(1, sizeof(NGAP_PLMNSupportItem_t));
//        ASN_SEQUENCE_ADD(&ie->value.choice.PLMNSupportList, PLMNSupportItem);
//
//        PLMNSupportItem->pLMNIdentity = "46001";
//
//        NGAP_SliceSupportItem_t *SliceSupportItem;
//        SliceSupportItem = ASN1_MemCalloc(1, sizeof(NGAP_SliceSupportItem_t));
//        ASN_SEQUENCE_ADD(&PLMNSupportItem->sliceSupportList, SliceSupportItem);
//
//        SliceSupportItem->s_NSSAI.sST = "1";
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildInitialUEMsg(void)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_InitiatingMessage_t *initiatingMessage;
//    NGAP_InitialUEMessage_t *InitialUEMessage;
//    NGAP_InitialUEMessage_IEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
//    pdu.choice.initiatingMessage = OS_MemCalloc(1, sizeof(NGAP_InitiatingMessage_t));
//
//    initiatingMessage = pdu.choice.initiatingMessage;
//    initiatingMessage->procedureCode = NGAP_ProcedureCode_id_InitialUEMessage;
//    initiatingMessage->criticality = NGAP_Criticality_ignore;
//    initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_InitialUEMessage;
//    {
//        InitialUEMessage = &initiatingMessage->value.choice.InitialUEMessage;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
//        ASN_SEQUENCE_ADD(&InitialUEMessage->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
//        ASN_SEQUENCE_ADD(&InitialUEMessage->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_NAS_PDU;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_NAS_PDU;
//        ie->value.choice.NAS_PDU = "122222222222222222222222";
//
//        /* IE3 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialUEMessage_IEs_t));
//        ASN_SEQUENCE_ADD(&InitialUEMessage->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_UserLocationInformation;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_InitialUEMessage_IEs__value_PR_UserLocationInformation;
//
//        NGAP_UserLocationInformation_t  *UserLocationInformation = &ie->value.choice.UserLocationInformation;
//        UserLocationInformation->present = NGAP_UserLocationInformation_PR_userLocationInformationNR;
//
//        NGAP_UserLocationInformationNR_t *UserLocationInformationNR = (NGAP_UserLocationInformationNR_t *)ASN1_MemCalloc(1, sizeof(NGAP_UserLocationInformationNR_t));
//        UserLocationInformation->choice.userLocationInformationNR = UserLocationInformationNR;
//        UserLocationInformationNR->nR_CGI.pLMNIdentity = "46001";
//        UserLocationInformationNR->nR_CGI.nRCellIdentity = "12345";
//
//        UserLocationInformationNR->tAI.pLMNIdentity = "46001";
//        UserLocationInformationNR->tAI.tAC = "81";
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildUlNasTransfer(void)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_InitiatingMessage_t *initiatingMessage;
//    NGAP_UplinkNASTransport_t *UplinkNASTransport;
//    NGAP_UplinkNASTransport_IEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
//    pdu.choice.initiatingMessage = OS_MemCalloc(1, sizeof(NGAP_InitiatingMessage_t));
//
//    initiatingMessage = pdu.choice.initiatingMessage;
//    initiatingMessage->procedureCode = NGAP_ProcedureCode_id_UplinkNASTransport;
//    initiatingMessage->criticality = NGAP_Criticality_ignore;
//    initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_UplinkNASTransport;
//    {
//        UplinkNASTransport = &initiatingMessage->value.choice.UplinkNASTransport;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
//        ASN_SEQUENCE_ADD(&UplinkNASTransport->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
//        ASN_SEQUENCE_ADD(&UplinkNASTransport->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        /* IE3 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
//        ASN_SEQUENCE_ADD(&UplinkNASTransport->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_NAS_PDU;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_NAS_PDU;
//        ie->value.choice.NAS_PDU = "122222222222222222222222";
//
//        /* IE4 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UplinkNASTransport_IEs_t));
//        ASN_SEQUENCE_ADD(&UplinkNASTransport->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_UserLocationInformation;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_UplinkNASTransport_IEs__value_PR_UserLocationInformation;
//
//        NGAP_UserLocationInformation_t  *UserLocationInformation = &ie->value.choice.UserLocationInformation;
//        UserLocationInformation->present = NGAP_UserLocationInformation_PR_userLocationInformationNR;
//
//        NGAP_UserLocationInformationNR_t *UserLocationInformationNR = (NGAP_UserLocationInformationNR_t *)ASN1_MemCalloc(1, sizeof(NGAP_UserLocationInformationNR_t));
//        UserLocationInformation->choice.userLocationInformationNR = UserLocationInformationNR;
//        UserLocationInformationNR->nR_CGI.pLMNIdentity = "46001";
//        UserLocationInformationNR->nR_CGI.nRCellIdentity = "12345";
//
//        UserLocationInformationNR->tAI.pLMNIdentity = "46001";
//        UserLocationInformationNR->tAI.tAC = "81";
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildDlNasTransfer(void)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_InitiatingMessage_t *initiatingMessage;
//    NGAP_DownlinkNASTransport_t *DownlinkNASTransport;
//    NGAP_DownlinkNASTransport_IEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
//    pdu.choice.initiatingMessage = OS_MemCalloc(1, sizeof(NGAP_InitiatingMessage_t));
//
//    initiatingMessage = pdu.choice.initiatingMessage;
//    initiatingMessage->procedureCode = NGAP_ProcedureCode_id_DownlinkNASTransport;
//    initiatingMessage->criticality = NGAP_Criticality_ignore;
//    initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_DownlinkNASTransport;
//    {
//        DownlinkNASTransport = &initiatingMessage->value.choice.DownlinkNASTransport;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_DownlinkNASTransport_IEs_t));
//        ASN_SEQUENCE_ADD(&DownlinkNASTransport->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_DownlinkNASTransport_IEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_DownlinkNASTransport_IEs_t));
//        ASN_SEQUENCE_ADD(&DownlinkNASTransport->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_DownlinkNASTransport_IEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        /* IE3 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_DownlinkNASTransport_IEs_t));
//        ASN_SEQUENCE_ADD(&DownlinkNASTransport->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_NAS_PDU;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_DownlinkNASTransport_IEs__value_PR_NAS_PDU;
//        ie->value.choice.NAS_PDU = "122222222222222222222222";
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildInitialContextSetupRequest(int32_t pduNum)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_InitiatingMessage_t *initiatingMessage;
//    NGAP_InitialContextSetupRequest_t *InitialContextSetupRequest;
//    NGAP_InitialContextSetupRequestIEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
//    pdu.choice.initiatingMessage = OS_MemCalloc(1, sizeof(NGAP_InitiatingMessage_t));
//
//    initiatingMessage = pdu.choice.initiatingMessage;
//    initiatingMessage->procedureCode = NGAP_ProcedureCode_id_InitialContextSetup;
//    initiatingMessage->criticality = NGAP_Criticality_reject;
//    initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_InitialContextSetupRequest;
//    {
//        InitialContextSetupRequest = &initiatingMessage->value.choice.InitialContextSetupRequest;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_InitialContextSetupRequestIEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_InitialContextSetupRequestIEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        /* IE3 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_GUAMI;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_InitialContextSetupRequestIEs__value_PR_GUAMI;
//
//        ie->value.choice.GUAMI.pLMNIdentity = "46001";
//        ie->value.choice.GUAMI.aMFPointer = "100";
//        ie->value.choice.GUAMI.aMFRegionID = "100";
//        ie->value.choice.GUAMI.aMFSetID = "100";
//
//        /* IE4 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AllowedNSSAI;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_InitialContextSetupRequestIEs__value_PR_AllowedNSSAI;
//
//        NGAP_AllowedNSSAI_Item_t *AllowedNSSAI_Item;
//        AllowedNSSAI_Item = ASN1_MemCalloc(1, sizeof(NGAP_AllowedNSSAI_Item_t));
//        ASN_SEQUENCE_ADD(&ie->value.choice.AllowedNSSAI, AllowedNSSAI_Item);
//
//        AllowedNSSAI_Item->s_NSSAI.sST = "1";
//
//        /* IE5 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_UESecurityCapabilities;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_InitialContextSetupRequestIEs__value_PR_UESecurityCapabilities;
//
//        ie->value.choice.UESecurityCapabilities.nRencryptionAlgorithms = "11100000";
//        ie->value.choice.UESecurityCapabilities.nRintegrityProtectionAlgorithms= "11100000";
//        ie->value.choice.UESecurityCapabilities.eUTRAencryptionAlgorithms= "11100000";
//        ie->value.choice.UESecurityCapabilities.eUTRAintegrityProtectionAlgorithms= "11100000";
//
//        /* IE6 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_SecurityKey;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_InitialContextSetupRequestIEs__value_PR_SecurityKey;
//
//        ie->value.choice.SecurityKey = "123456789";
//
//        if(0 != pduNum)
//        {
//            /* IE7 可选IE */
//            ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupRequestIEs_t));
//            ASN_SEQUENCE_ADD(&InitialContextSetupRequest->protocolIEs, ie);
//            ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceSetupListCxtReq;
//            ie->criticality = NGAP_Criticality_reject;
//            ie->value.present = NGAP_InitialContextSetupRequestIEs__value_PR_PDUSessionResourceSetupListCxtReq;
//
//            NGAP_PDUSessionResourceSetupItemCxtReq_t *PDUSessionResourceSetupItemCxtReq;
//            PDUSessionResourceSetupItemCxtReq = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupItemCxtReq_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListCxtReq, PDUSessionResourceSetupItemCxtReq);
//            PDUSessionResourceSetupItemCxtReq->pDUSessionID = 1;
//            PDUSessionResourceSetupItemCxtReq->s_NSSAI.sST = "1";
//            PDUSessionResourceSetupItemCxtReq->pDUSessionResourceSetupRequestTransfer = "122222222222222222";
//
//            //如果有第二个
//            PDUSessionResourceSetupItemCxtReq = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupItemCxtReq_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListCxtReq, PDUSessionResourceSetupItemCxtReq);
//            PDUSessionResourceSetupItemCxtReq->pDUSessionID = 2;
//            PDUSessionResourceSetupItemCxtReq->s_NSSAI.sST = "1";
//            PDUSessionResourceSetupItemCxtReq->pDUSessionResourceSetupRequestTransfer = "122222222222222222";
//        }
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildInitialContextSetupResponse(int32_t pduNum)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_SuccessfulOutcome_t *successfulOutcome;
//    NGAP_InitialContextSetupResponse_t *InitialContextSetupResponse;
//    NGAP_InitialContextSetupResponseIEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
//    pdu.choice.successfulOutcome = OS_MemCalloc(1, sizeof(NGAP_SuccessfulOutcome_t));
//
//    successfulOutcome = pdu.choice.successfulOutcome;
//    successfulOutcome->procedureCode = NGAP_ProcedureCode_id_InitialContextSetup;
//    successfulOutcome->criticality = NGAP_Criticality_reject;
//    successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_InitialContextSetupResponse;
//    {
//        InitialContextSetupResponse = &successfulOutcome->value.choice.InitialContextSetupResponse;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupResponse->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupResponse->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        if(0 != pduNum)
//        {
//            /* IE3 */
//            ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupResponseIEs_t));
//            ASN_SEQUENCE_ADD(&InitialContextSetupResponse->protocolIEs, ie);
//            ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceSetupListCxtRes;
//            ie->criticality = NGAP_Criticality_ignore;
//            ie->value.present = NGAP_InitialContextSetupResponseIEs__value_PR_PDUSessionResourceSetupListCxtRes;
//
//            NGAP_PDUSessionResourceSetupItemCxtRes_t *PDUSessionResourceSetupItemCxtRes;
//            PDUSessionResourceSetupItemCxtRes = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupItemCxtRes_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListCxtRes, PDUSessionResourceSetupItemCxtRes);
//            PDUSessionResourceSetupItemCxtRes->pDUSessionID = 1;
//            PDUSessionResourceSetupItemCxtRes->pDUSessionResourceSetupResponseTransfer = "1222222222222";
//
//            //如果有第二个
//            PDUSessionResourceSetupItemCxtRes = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupItemCxtRes_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListCxtRes, PDUSessionResourceSetupItemCxtRes);
//            PDUSessionResourceSetupItemCxtRes->pDUSessionID = 2;
//            PDUSessionResourceSetupItemCxtRes->pDUSessionResourceSetupResponseTransfer = "1222222222222";
//        }
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildInitialContextSetupFail(int32_t pduNum)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_UnsuccessfulOutcome_t *UnsuccessfulOutcome;
//    NGAP_InitialContextSetupFailure_t *InitialContextSetupFailure;
//    NGAP_InitialContextSetupFailureIEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_unsuccessfulOutcome;
//    pdu.choice.unsuccessfulOutcome = OS_MemCalloc(1, sizeof(NGAP_UnsuccessfulOutcome_t));
//
//    UnsuccessfulOutcome = pdu.choice.unsuccessfulOutcome;
//    UnsuccessfulOutcome->procedureCode = NGAP_ProcedureCode_id_InitialContextSetup;
//    UnsuccessfulOutcome->criticality = NGAP_Criticality_reject;
//    UnsuccessfulOutcome->value.present = NGAP_UnsuccessfulOutcome__value_PR_InitialContextSetupFailure;
//    {
//        InitialContextSetupFailure = &UnsuccessfulOutcome->value.choice.InitialContextSetupFailure;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupFailureIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupFailure->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_InitialContextSetupFailureIEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupFailureIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupFailure->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_InitialContextSetupFailureIEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        /* IE3 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_InitialContextSetupFailureIEs_t));
//        ASN_SEQUENCE_ADD(&InitialContextSetupFailure->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_Cause;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_InitialContextSetupFailureIEs__value_PR_Cause;
//
//        ie->value.choice.Cause.present = NGAP_Cause_PR_radioNetwork;
//        ie->value.choice.Cause.choice.radioNetwork = NGAP_CauseRadioNetwork_unspecified;
//
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildUEContextReleaseRequest(void)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_InitiatingMessage_t *initiatingMessage;
//    NGAP_UEContextReleaseRequest_t *UEContextReleaseRequest;
//    NGAP_UEContextReleaseRequest_IEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
//    pdu.choice.initiatingMessage = OS_MemCalloc(1, sizeof(NGAP_InitiatingMessage_t));
//
//    initiatingMessage = pdu.choice.initiatingMessage;
//    initiatingMessage->procedureCode = NGAP_ProcedureCode_id_UEContextReleaseRequest;
//    initiatingMessage->criticality = NGAP_Criticality_ignore;
//    initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_UEContextReleaseRequest;
//    {
//        UEContextReleaseRequest = &initiatingMessage->value.choice.UEContextReleaseRequest;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UEContextReleaseRequest_IEs_t));
//        ASN_SEQUENCE_ADD(&UEContextReleaseRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_UEContextReleaseRequest_IEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UEContextReleaseRequest_IEs_t));
//        ASN_SEQUENCE_ADD(&UEContextReleaseRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_UEContextReleaseRequest_IEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        /* IE3 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UEContextReleaseRequest_IEs_t));
//        ASN_SEQUENCE_ADD(&UEContextReleaseRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_Cause;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_UEContextReleaseRequest_IEs__value_PR_Cause;
//        ie->value.choice.Cause.present = NGAP_Cause_PR_radioNetwork;
//        ie->value.choice.Cause.choice.radioNetwork = NGAP_CauseRadioNetwork_unspecified;
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildUEContextReleaseCommand(void)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_InitiatingMessage_t *initiatingMessage;
//    NGAP_UEContextReleaseCommand_t *UEContextReleaseCommand;
//    NGAP_UEContextReleaseCommand_IEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
//    pdu.choice.initiatingMessage = OS_MemCalloc(1, sizeof(NGAP_InitiatingMessage_t));
//
//    initiatingMessage = pdu.choice.initiatingMessage;
//    initiatingMessage->procedureCode = NGAP_ProcedureCode_id_UEContextRelease;
//    initiatingMessage->criticality = NGAP_Criticality_reject;
//    initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_UEContextReleaseCommand;
//    {
//        UEContextReleaseCommand = &initiatingMessage->value.choice.UEContextReleaseCommand;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UEContextReleaseCommand_IEs_t));
//        ASN_SEQUENCE_ADD(&UEContextReleaseCommand->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_UE_NGAP_IDs;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_UEContextReleaseCommand_IEs__value_PR_UE_NGAP_IDs;
//
//        ie->value.choice.UE_NGAP_IDs.present = NGAP_UE_NGAP_IDs_PR_uE_NGAP_ID_pair;
//        ie->value.choice.UE_NGAP_IDs.choice.uE_NGAP_ID_pair->rAN_UE_NGAP_ID = 1;
//        ie->value.choice.UE_NGAP_IDs.choice.uE_NGAP_ID_pair->aMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UEContextReleaseCommand_IEs_t));
//        ASN_SEQUENCE_ADD(&UEContextReleaseCommand->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_Cause;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_UEContextReleaseCommand_IEs__value_PR_Cause;
//
//        ie->value.choice.Cause.present = NGAP_Cause_PR_radioNetwork;
//        ie->value.choice.Cause.choice.radioNetwork = NGAP_CauseRadioNetwork_unspecified;
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildUEContextReleaseComplete(void)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_SuccessfulOutcome_t *successfulOutcome;
//    NGAP_UEContextReleaseComplete_t *UEContextReleaseComplete;
//    NGAP_UEContextReleaseComplete_IEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
//    pdu.choice.successfulOutcome = OS_MemCalloc(1, sizeof(NGAP_SuccessfulOutcome_t));
//
//    successfulOutcome = pdu.choice.successfulOutcome;
//    successfulOutcome->procedureCode = NGAP_ProcedureCode_id_UEContextRelease;
//    successfulOutcome->criticality = NGAP_Criticality_reject;
//    successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_UEContextReleaseComplete;
//    {
//        UEContextReleaseComplete = &successfulOutcome->value.choice.UEContextReleaseComplete;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UEContextReleaseComplete_IEs_t));
//        ASN_SEQUENCE_ADD(&UEContextReleaseComplete->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_UEContextReleaseComplete_IEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UEContextReleaseComplete_IEs_t));
//        ASN_SEQUENCE_ADD(&UEContextReleaseComplete->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_UEContextReleaseComplete_IEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildUERadioCapabilityInfoIndication(int32_t pduNum)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_InitiatingMessage_t *initiatingMessage;
//    NGAP_UERadioCapabilityInfoIndication_t *UERadioCapabilityInfoIndication;
//    NGAP_UERadioCapabilityInfoIndicationIEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
//    pdu.choice.initiatingMessage = OS_MemCalloc(1, sizeof(NGAP_InitiatingMessage_t));
//
//    initiatingMessage = pdu.choice.initiatingMessage;
//    initiatingMessage->procedureCode = NGAP_ProcedureCode_id_UERadioCapabilityInfoIndication;
//    initiatingMessage->criticality = NGAP_Criticality_ignore;
//    initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_UERadioCapabilityInfoIndication;
//    {
//        UERadioCapabilityInfoIndication = &initiatingMessage->value.choice.UERadioCapabilityInfoIndication;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UERadioCapabilityInfoIndicationIEs_t));
//        ASN_SEQUENCE_ADD(&UERadioCapabilityInfoIndication->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_UERadioCapabilityInfoIndicationIEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UERadioCapabilityInfoIndicationIEs_t));
//        ASN_SEQUENCE_ADD(&UERadioCapabilityInfoIndication->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_UERadioCapabilityInfoIndicationIEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        /* IE3 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_UERadioCapabilityInfoIndicationIEs_t));
//        ASN_SEQUENCE_ADD(&UERadioCapabilityInfoIndication->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_UERadioCapability;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_UERadioCapabilityInfoIndicationIEs__value_PR_UERadioCapability;
//
//        ie->value.choice.UERadioCapability = "555555555555555";
//
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildPDUSessionResourceSetupRequest(int32_t pduNum)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_InitiatingMessage_t *initiatingMessage;
//    NGAP_PDUSessionResourceSetupRequest_t *PDUSessionResourceSetupRequest;
//    NGAP_PDUSessionResourceSetupRequestIEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
//    pdu.choice.initiatingMessage = OS_MemCalloc(1, sizeof(NGAP_InitiatingMessage_t));
//
//    initiatingMessage = pdu.choice.initiatingMessage;
//    initiatingMessage->procedureCode = NGAP_ProcedureCode_id_PDUSessionResourceSetup;
//    initiatingMessage->criticality = NGAP_Criticality_reject;
//    initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_PDUSessionResourceSetupRequest;
//    {
//        PDUSessionResourceSetupRequest = &initiatingMessage->value.choice.PDUSessionResourceSetupRequest;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&PDUSessionResourceSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_PDUSessionResourceSetupRequestIEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupRequestIEs_t));
//        ASN_SEQUENCE_ADD(&PDUSessionResourceSetupRequest->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_PDUSessionResourceSetupRequestIEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        if(0 != pduNum)
//        {
//            /* IE3 必选 */
//            ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupRequestIEs_t));
//            ASN_SEQUENCE_ADD(&PDUSessionResourceSetupRequest->protocolIEs, ie);
//            ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceSetupListSUReq;
//            ie->criticality = NGAP_Criticality_reject;
//            ie->value.present = NGAP_PDUSessionResourceSetupRequestIEs__value_PR_PDUSessionResourceSetupListSUReq;
//
//            NGAP_PDUSessionResourceSetupItemSUReq_t *PDUSessionResourceSetupItemSUReq;
//            PDUSessionResourceSetupItemSUReq = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupItemSUReq_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListSUReq, PDUSessionResourceSetupItemSUReq);
//
//            PDUSessionResourceSetupItemSUReq->pDUSessionID = 1;
//            PDUSessionResourceSetupItemSUReq->s_NSSAI.sST = "1";
//            PDUSessionResourceSetupItemSUReq->pDUSessionResourceSetupRequestTransfer = "122222222222222222";
//
//            //如果有第二个
//            PDUSessionResourceSetupItemSUReq = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupItemSUReq_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListSUReq, PDUSessionResourceSetupItemSUReq);
//
//            PDUSessionResourceSetupItemSUReq->pDUSessionID = 2;
//            PDUSessionResourceSetupItemSUReq->s_NSSAI.sST = "1";
//            PDUSessionResourceSetupItemSUReq->pDUSessionResourceSetupRequestTransfer = "122222222222222222";
//        }
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildPDUSessionResourceSetupResponse(int32_t pduNum)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_SuccessfulOutcome_t *successfulOutcome;
//    NGAP_PDUSessionResourceSetupResponse_t *PDUSessionResourceSetupResponse;
//    NGAP_PDUSessionResourceSetupResponseIEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
//    pdu.choice.successfulOutcome = OS_MemCalloc(1, sizeof(NGAP_SuccessfulOutcome_t));
//
//    successfulOutcome = pdu.choice.successfulOutcome;
//    successfulOutcome->procedureCode = NGAP_ProcedureCode_id_PDUSessionResourceSetup;
//    successfulOutcome->criticality = NGAP_Criticality_reject;
//    successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_PDUSessionResourceSetupResponse;
//    {
//        PDUSessionResourceSetupResponse = &successfulOutcome->value.choice.PDUSessionResourceSetupResponse;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
//        ASN_SEQUENCE_ADD(&PDUSessionResourceSetupResponse->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
//        ASN_SEQUENCE_ADD(&PDUSessionResourceSetupResponse->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        if(0 != pduNum)
//        {
//            /* IE3 可选 */
//            ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupResponseIEs_t));
//            ASN_SEQUENCE_ADD(&PDUSessionResourceSetupResponse->protocolIEs, ie);
//            ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceSetupListSURes;
//            ie->criticality = NGAP_Criticality_ignore;
//            ie->value.present = NGAP_PDUSessionResourceSetupResponseIEs__value_PR_PDUSessionResourceSetupListSURes;
//
//            NGAP_PDUSessionResourceSetupItemSURes_t *PDUSessionResourceSetupItemSURes;
//            PDUSessionResourceSetupItemSURes = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupItemSURes_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListSURes,PDUSessionResourceSetupItemSURes);
//            PDUSessionResourceSetupItemSURes->pDUSessionID = 1;
//            PDUSessionResourceSetupItemSURes->pDUSessionResourceSetupResponseTransfer = "1222222222222";
//
//            //如果有第二个
//            NGAP_PDUSessionResourceSetupItemSURes_t *PDUSessionResourceSetupItemSURes;
//            PDUSessionResourceSetupItemSURes = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceSetupItemSURes_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceSetupListSURes,PDUSessionResourceSetupItemSURes);
//            PDUSessionResourceSetupItemSURes->pDUSessionID = 2;
//            PDUSessionResourceSetupItemSURes->pDUSessionResourceSetupResponseTransfer = "1222222222222";
//
//            /* IE4 失败列表可选 */
//        }
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildPDUSessionResourceReleaseCommand(int32_t pduNum)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_InitiatingMessage_t *initiatingMessage;
//    NGAP_PDUSessionResourceReleaseCommand_t *PDUSessionResourceReleaseCommand;
//    NGAP_PDUSessionResourceReleaseCommandIEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_initiatingMessage;
//    pdu.choice.initiatingMessage = OS_MemCalloc(1, sizeof(NGAP_InitiatingMessage_t));
//
//    initiatingMessage = pdu.choice.initiatingMessage;
//    initiatingMessage->procedureCode = NGAP_ProcedureCode_id_PDUSessionResourceRelease;
//    initiatingMessage->criticality = NGAP_Criticality_reject;
//    initiatingMessage->value.present = NGAP_InitiatingMessage__value_PR_PDUSessionResourceReleaseCommand;
//    {
//        PDUSessionResourceReleaseCommand = &initiatingMessage->value.choice.PDUSessionResourceReleaseCommand;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceReleaseCommandIEs_t));
//        ASN_SEQUENCE_ADD(&PDUSessionResourceReleaseCommand->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_PDUSessionResourceReleaseCommandIEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceReleaseCommandIEs_t));
//        ASN_SEQUENCE_ADD(&PDUSessionResourceReleaseCommand->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_reject;
//        ie->value.present = NGAP_PDUSessionResourceReleaseCommandIEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        if(0 != pduNum)
//        {
//            /* IE3 必选 */
//            ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceReleaseCommandIEs_t));
//            ASN_SEQUENCE_ADD(&PDUSessionResourceReleaseCommand->protocolIEs, ie);
//            ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceToReleaseListRelCmd;
//            ie->criticality = NGAP_Criticality_reject;
//            ie->value.present = NGAP_PDUSessionResourceReleaseCommandIEs__value_PR_PDUSessionResourceToReleaseListRelCmd;
//
//            NGAP_PDUSessionResourceToReleaseItemRelCmd_t *PDUSessionResourceToReleaseItemRelCmd;
//            PDUSessionResourceToReleaseItemRelCmd = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceToReleaseItemRelCmd_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceToReleaseListRelCmd, PDUSessionResourceToReleaseItemRelCmd);
//
//            PDUSessionResourceToReleaseItemRelCmd->pDUSessionID = 1;
//            PDUSessionResourceToReleaseItemRelCmd->pDUSessionResourceReleaseCommandTransfer = "122222222222222222";
//
//            //如果有第二个
//            NGAP_PDUSessionResourceToReleaseItemRelCmd_t *PDUSessionResourceToReleaseItemRelCmd;
//            PDUSessionResourceToReleaseItemRelCmd = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceToReleaseItemRelCmd_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceToReleaseListRelCmd, PDUSessionResourceToReleaseItemRelCmd);
//
//            PDUSessionResourceToReleaseItemRelCmd->pDUSessionID = 2;
//            PDUSessionResourceToReleaseItemRelCmd->pDUSessionResourceReleaseCommandTransfer = "122222222222222222";
//        }
//    }
//
//    return O5G_RC_OK;
//}
//
//int32_t NGAP_BuildPDUSessionResourceReleaseResponse(int32_t pduNum)
//{
//    NGAP_NGAP_PDU_t pdu;
//    NGAP_SuccessfulOutcome_t *successfulOutcome;
//    NGAP_PDUSessionResourceReleaseResponse_t *PDUSessionResourceReleaseResponse;
//    NGAP_PDUSessionResourceReleaseResponseIEs_t *ie = NULL;
//
//    memset(&pdu, 0, sizeof (NGAP_NGAP_PDU_t));
//    pdu.present = NGAP_NGAP_PDU_PR_successfulOutcome;
//    pdu.choice.successfulOutcome = OS_MemCalloc(1, sizeof(NGAP_SuccessfulOutcome_t));
//
//    successfulOutcome = pdu.choice.successfulOutcome;
//    successfulOutcome->procedureCode = NGAP_ProcedureCode_id_PDUSessionResourceRelease;
//    successfulOutcome->criticality = NGAP_Criticality_reject;
//    successfulOutcome->value.present = NGAP_SuccessfulOutcome__value_PR_PDUSessionResourceReleaseResponse;
//    {
//        PDUSessionResourceReleaseResponse = &successfulOutcome->value.choice.PDUSessionResourceReleaseResponse;
//
//        /* IE1 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceReleaseResponseIEs_t));
//        ASN_SEQUENCE_ADD(&PDUSessionResourceReleaseResponse->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_AMF_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_PDUSessionResourceReleaseResponseIEs__value_PR_AMF_UE_NGAP_ID;
//
//        ie->value.choice.AMF_UE_NGAP_ID = 1;
//
//        /* IE2 */
//        ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceReleaseResponseIEs_t));
//        ASN_SEQUENCE_ADD(&PDUSessionResourceReleaseResponse->protocolIEs, ie);
//        ie->id = NGAP_ProtocolIE_ID_id_RAN_UE_NGAP_ID;
//        ie->criticality = NGAP_Criticality_ignore;
//        ie->value.present = NGAP_PDUSessionResourceReleaseResponseIEs__value_PR_RAN_UE_NGAP_ID;
//
//        ie->value.choice.RAN_UE_NGAP_ID = 1;
//
//        if(0 != pduNum)
//        {
//            /* IE3  */
//            ie = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceReleaseResponseIEs_t));
//            ASN_SEQUENCE_ADD(&PDUSessionResourceReleaseResponse->protocolIEs, ie);
//            ie->id = NGAP_ProtocolIE_ID_id_PDUSessionResourceReleasedListRelRes;
//            ie->criticality = NGAP_Criticality_ignore;
//            ie->value.present = NGAP_PDUSessionResourceReleaseResponseIEs__value_PR_PDUSessionResourceReleasedListRelRes;
//
//            NGAP_PDUSessionResourceReleasedItemRelRes_t *PDUSessionResourceReleasedItemRelRes;
//            PDUSessionResourceReleasedItemRelRes = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceReleasedItemRelRes_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceReleasedListRelRes,PDUSessionResourceReleasedItemRelRes);
//            PDUSessionResourceReleasedItemRelRes->pDUSessionID = 1;
//            PDUSessionResourceReleasedItemRelRes->pDUSessionResourceReleaseResponseTransfer = "1222222222222";
//
//            //如果有第二个
//            NGAP_PDUSessionResourceReleasedItemRelRes_t *PDUSessionResourceReleasedItemRelRes;
//            PDUSessionResourceReleasedItemRelRes = ASN1_MemCalloc(1, sizeof(NGAP_PDUSessionResourceReleasedItemRelRes_t));
//            ASN_SEQUENCE_ADD(&ie->value.choice.PDUSessionResourceReleasedListRelRes,PDUSessionResourceReleasedItemRelRes);
//            PDUSessionResourceReleasedItemRelRes->pDUSessionID = 2;
//            PDUSessionResourceReleasedItemRelRes->pDUSessionResourceReleaseResponseTransfer = "1222222222222";
//        }
//    }
//
//    return O5G_RC_OK;
//}
